Airbnb Tech Blog - How Airbnb Achieved Metric Consistency at Scale
Airbnb 一直已他們的 data-driven 的文化著名,所以他們非常依賴在他們資料倉儲中的 base table 來幫助做出商業決定,可以想成是 Star Schema 或是 Snowflake Schema 中連結其他表的 fact table,但是隨著公司擴張和新的分析需求冒出來,Table 層次的抽象對他們來說已經不夠用了,他們需要 Metric 層次的抽象,Minerva 原本在內部叫做 (Global Metrics) 就是應此而生的 metrics 基礎設施,base table 不再直接暴露給有分析需求的使用者.
Minerva 解決數據使用者因數據重複、錯誤等問題導致的低效能問題。統一了數據生產、計算和消費功能,確保不同部門使用一致的數據進行決策,從而提高了數據準確性和一致性。 舉一個白話文例子來說,就是各個部門看到、使用、計算的 Revenue 都是由 Minerva 提供算出來的,不在像以前是各個部門自己從 base table 算出來的不同定義的 Revenue。
COVID-19 時期,幾乎一夜之間,Airbnb 的預訂量驟降,取消量飆升。這對 Airbnb 來說是一個令人恐懼的時刻,也引發了許多重要的商業問題? 它對入住率有何影響? 取消量增加對財務的影響是什麼? COVID 如何改變了旅行需求,尤其是旅行距離?Airbnb 需要快速且正確地回答這些問題。
關鍵在於,由於供應、需求、財務的許多重要業務指標和維度已在 Minerva 中定義,Airbnb 的中央分析團隊能夠在短短幾天內繪製出管理儀表板的草圖,並推出初始版本。COVID-19 儀表板迅速成為唯一的權威數據來源,並在危機期間被 Airbnb 的高層團隊密切檢視。該儀表板累積了超過 11,000 次查看和 1,500 名不同的觀看者。毫不意外的是,COVID-19 儀表板成為 2020 年 Airbnb 上觀看次數最多的 Superset 儀表板。
幸運的事情是,Airbnb 確實發現了訂房的新需求,本地旅行需求(短距離,應該指的是封城的範圍內)的轉變以及長期住宿的需求增長(Remote 變成常態,所以可以直接搬去別的州)。這些發現促使 Airbnb 重新設計了產品頁面上的幾個重要 UI/UX,以滿足用戶偏好的轉變。在危機時刻,能夠快速回答問題並發掘洞察力比以往任何時候都更為重要。
Minerva,Airbnb 的數據超人 🦸
前面提到了,Minerva 是 Data Lakehouse 的一種高層次封裝,Minerva 融合很多軟體工程的 best pratice,其中之一就是自動化的單元測試,Minerva 會取出一部分 table 的子集,所有開發 Minerva 的工程師可以輕易的筆電上跑新 metric 的 SQL 單元測試,這些單元測試的 runtime 就是 DuckDB。
我不確定他們怎麼取出 Production Table 的子集,但是 DuckDB 本身提供了非常方便的 Sample Clause
SELECT * FROM
'https://ironman24.douenergy.com/employees.parquet'
USING SAMPLE 30% (bernoulli);
這樣就用 bernoulli sampling 取出 30% 的資料拉,是不是非常方便呢 😎
Minerva 的其中一位 Engineer,Robert Chang 有在 dbt taipei (2024/01) 分享過 Minerva。
趕快訂閱起來 dbt taipei,不錯過下次的精彩活動。